/**
 * 全局可复用的自定义hooks函数（来源于react hooks） 拆分为组合式api代码
 * 1.定义一个函数，名字要求use开头
 * 2.函数内部放要拆分的逻辑代码
*/
import { ref } from 'vue';
import {readAllApi} from '@/apis/message.js'
export const useGet=(getListApi,type)=>{
	const params = {
		page: 1,
		pageSize: 10
	};
	const list = ref([]);
	//是否还有更多数据
	const hasMore = ref(true);
	const getList = async () => {
		const res = await getListApi(type, params.page, params.pageSize);
		console.log(res);
		list.value.push(...(res.data.items||[]));  //如果push添加items里面没有数据的话，就会是[]
		if (parseInt(res.data.counts) === list.value.length) {
			//没有更多数据了
			hasMore.value = false;
		}
	};
	
	getList()
	
	/**
	 * 上拉分页：
	 * 1.判断是否滚动到底部
	 * 2.到底部=》判断是否有更多数据=》页码+1=》请求下一页数据
	 * 3.判断：是否还有更多数据
	 *   没有=》通过hasMore变量控制，return并提示加载完了
	 */
	const onScrollToLower = () => {
		if (hasMore.value === false) return;
		console.log('底部');
		params.page++; //这个使用的是自加，不能使用+1
		getList();
	};
	
	/**
	 * 下拉刷新
	 */
	//控制下拉刷新的效果的
	const isTriggered = ref(false);
	const refresh = async () => {
		isTriggered.value = true;
		console.log('开始刷新');
		/**
		 * 下拉刷新步骤：重新获取最新的任务列表数据（核心）
		 * 1.重置操作？
		 * 1.1 页面重置为1
		 * 1.2 列表数据重置为[]数组
		 * 1.3 hasMore重置为true
		 *
		 * 2.重新发请求（刷新列表）
		 */
		params.page = 1;
		list.value = [];
		hasMore.value=true
		await getList();
		setTimeout(() => {
			isTriggered.value = false;
		});
	};
	
	/**
	 * 已读功能实现
	*/
	const readAll=async()=>{
		//1.发送请求
		//2.重新获取列表数据或者现有的list数据每一条都改为已读。
		const res=await readAllApi(type)
		console.log('修改',res);
		list.value.forEach(item=>{
			item.isRead=1
		})
	}
	
	return {list,onScrollToLower,refresh,isTriggered,hasMore,readAll,getList}
}
